<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=dwcsdvds, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES5的类
        // function Person(name,age){
        //     this.name= name;
        //     this.age = age;

            // this.fn = function(){
            // console.log('fn');
            // }
        // }
        // prototype 公共空间
        // Person.prototype.fn = function(){
        //     console.log('fn');
        // }

        // let zhangsan = new Person('张三',20);
        // let lisi  = new Person('李四',21);
        // console.log(zhangsan.fn === lisi.fn);// true




        // ES6的类 :本质也是构造函数, 只是提供了一种新的语法糖

        // class Person{
        //     // constructor 函数会在 实例化的时候执行;
        //     constructor(name,age){
        //         this.name = name ;
        //         this.age = age;
        //     }
        //     fn(){
        //         console.log('fn');
        //     }
        // }

        // let zhangsan = new Person('张三',20);
        // let lisi = new Person('李四',21);

        // console.log(zhangsan);
        // console.log(lisi);
        // zhangsan.fn();
        // lisi.fn();
        // console.log(typeof Person); // function



        // 属性的多种定义方式
        // 1.直接把属性写在外边,不需要this;
        // 2.支持 get 和 set
        class Person{
            constructor(){
                this.name = '张三';
                // this在构造函数里面指向实例, 属性和方法通用
                this.myfn();
            }
            fn(){
                console.log(this.name);
            }
            myfn(){
                console.log('myfn');
            }
            get age(){
                console.log('get');
                return 20;
            }
            set age(newvalue){
                console.log(('??',newvalue));
            }
        }
        let zhangsan = new Person();
        console.log(zhangsan);

    </script>
</body>
</html>